Tip de date ( intreg, real, caracter…); în funcţie de tipul datei declarat se alocă spaţiu de memorie: 2,4,6 octeţi ; Domeniul de valori[limita_iniţială, limita_finală] depinde de tipul datei declarat;
durata de viaţă / domeniul de vizibilitate: valoarea recunoscută într-un anumit punct al programului/subprogramului;
modul de acces la conţinutul locaţiei de memorie : direct prin intermediul identificatorului, indirect prin intermediul pointerilor (în funcţie de modul de alocare a memoriei );
Zone/segmente de memorie
segmentul de date - variabile globale, recunoscute în orice punct al programului ( alocare statică);
segmentul de stivă – varabile locale/ subprograme
segmentul HEAP –gestionat prin alocare dinamică – în timpul execuţiei programului/subprogramului
#include<……….> declarări date/variabile globale – segmentul de date
int main() { declarări variabile locale – segment de memorie stivă Toate variabilele declarate sunt recunoscute numai în interiorul blocului ({delimitarea conţinutului unui bloc } ) ………………………………………….. cod program/subprogram/bloc } // la ieşirea din subprogram/bloc spaţiul de memorie alocat în segmentul de memorie stivă utilizat este dezafectat ( se goleşte stiva)
Alocare statică= se alocă spaţiu de memorie în timpul compilării programului;
Alocare dinamică= se alocă spaţiu de memorie în timpul execuţiei programului; spaţiul alocat poate fi dezafectat în momentul în care nu mai este nevoie de conţinuturile variabilelor respective;
HEAP. Operatori şi constante predefinite în limbajul C++
NULL- constanta predefinită prin care se indică o adresă inexistentă/nealocată( compatibilă cu orice tip de date pointer); new tip_date- se rezerva spatiu de memorie în zona HEAP pentru tipul de date specificat delete (adresa_HEAP) - dezafectare spatiu de memorie alocat în zona HEAP de la adresa specificata
Exemplu didactic: int *a,*b,*c; a=new int; b=new int; c=new int; *a=3; *b=4; *c=*a+*b; cout<<*c; se va afisa 7 cout << endl; cout<<c; atentie! se va afisa adresa unei variabile de memorie in format hexa... de genul 0x83107... delete(c); cout<<*c; atentie! rezultatul afisat nu are nicio legatura cu valoarea calculata anterior, spatiul de memorie a fost dezafectat
Orice dată , poate fi caracterizată prin:
Zone/segmente de memorie
#include<……….>
declarări date/variabile globale – segmentul de date
subprogram : tip_date(void) nume_subprogram (parametrii formali..)
int main()
{ declarări variabile locale – segment de memorie stivă
Toate variabilele declarate sunt recunoscute numai în interiorul blocului
( {delimitarea conţinutului unui bloc } )
………………………………………….. cod program/subprogram/bloc
} // la ieşirea din subprogram/bloc spaţiul de memorie alocat în segmentul de memorie stivă utilizat este dezafectat ( se goleşte stiva)
Alocare statică= se alocă spaţiu de memorie în timpul compilării programului;
Alocare dinamică= se alocă spaţiu de memorie în timpul execuţiei programului; spaţiul alocat poate fi dezafectat în momentul în care nu mai este nevoie de conţinuturile variabilelor respective;
HEAP. Operatori şi constante predefinite în limbajul C++
NULL- constanta predefinită prin care se indică o adresă inexistentă/nealocată( compatibilă cu orice tip de date pointer);
new tip_date - se rezerva spatiu de memorie în zona HEAP pentru tipul de date specificat
delete (adresa_HEAP) - dezafectare spatiu de memorie alocat în zona HEAP de la adresa specificata
Exemplu didactic:
int *a,*b,*c;
a=new int; b=new int; c=new int;
*a=3; *b=4; *c=*a+*b;
cout<<*c; se va afisa 7
cout << endl;
cout<<c; atentie! se va afisa adresa unei variabile de memorie in format hexa... de genul 0x83107...
delete(c);
cout<<*c; atentie! rezultatul afisat nu are nicio legatura cu valoarea calculata anterior, spatiul de memorie a fost dezafectat
ListeAlocateDinamic